package gw.com.android.model;

import android.support.v4.app.FragmentActivity;

import com.gwtsz.gts2.hx.R;

import org.json.JSONArray;
import org.json.JSONObject;

import gw.com.android.app.ActivityManager;
import gw.com.android.app.AppMain;
import gw.com.android.app.GTConfig;
import gw.com.android.presenter.SwitchAccountPresenter;
import gw.com.android.ui.dialog.LoginDialog;
import gw.com.android.utils.MobclickEventUtlis;
import www.com.library.model.DataItemDetail;
import www.com.library.model.DataItemResult;
import www.com.library.util.CommonUtils;
import www.com.library.util.NetworkMonitor;

/**
 * Created by reeta.zou on 2016/7/29.
 * 左边菜单栏的配置处理
 */
public class ConfigMenuDeal {

    /**
     * 底部tab类型菜单选项
     *
     * @return
     */
    public DataItemResult getButtomTabTypeList() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.BUTTOM_TAB_LIST_TAG);
        if (null != array && array.length() > 0) {
            return getBottomMenuList(array);
        }

        return new DataItemResult();

    }

    /**
     * 首页菜单选项列表
     *
     * @return
     */
    public DataItemResult getHomeMenuTypeList() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.HOME_MENU_LIST_TAG);
        if (null != array && array.length() > 0) {
            return getHomeMenuList(array);
        }

        return new DataItemResult();

    }

    /**
     * 我的界面菜单选项处理
     *
     * @return
     */
    public DataItemResult getSystemList() {
        JSONObject object = ConfigUtil.instance().mConfigObject.optJSONObject(ConfigType.SYSTEM_LIST_TAG);
        JSONArray array;
        if (null == object) {
            return new DataItemResult();
        }
        if (GTConfig.instance().getAccountType() == GTConfig.ACC_TYPE_DEMO) {
            array = object.optJSONArray(ConfigType.DEMO_TAG);
        } else if (GTConfig.instance().getAccountType() == GTConfig.ACC_TYPE_GUEST) {
            array = object.optJSONArray(ConfigType.GUEST_TAG);
        } else {
            array = object.optJSONArray(ConfigType.REAL_TAG);
        }

        if (null != array && array.length() > 0) {
            return getIconMenuList(array);
        }

        return new DataItemResult();
    }

    /**
     * 我的界面菜单选项处理
     *
     * @return
     */
    public DataItemResult getMidSystemList() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.SYSTEM_MID_LIST_TAG);
        if (null == array) {
            return new DataItemResult();
        }

        if (null != array && array.length() > 0) {
            return getIconMenuList(array);
        }

        return new DataItemResult();
    }

    /**
     * 我的界面菜单选项处理
     *
     * @return
     */
    public DataItemResult getBottomSystemList() {
        JSONArray array = ConfigUtil.instance().mConfigObject.optJSONArray(ConfigType.SYSTEM_BOTTOM_LIST_TAG);
        if (null == array) {
            return new DataItemResult();
        }

        if (null != array && array.length() > 0) {
            return getIconMenuList(array);
        }

        return new DataItemResult();
    }


    /**
     * 根据配置文件条件返回首页菜单的一些选项
     *
     * @param array
     * @return
     */
    private DataItemResult getHomeMenuList(JSONArray array) {
        DataItemResult items = new DataItemResult();
        DataItemDetail mItem = null;
        for (int i = 0; i < array.length(); i++) {
            JSONObject jsonObject = array.optJSONObject(i);
            String key = jsonObject.optString(ConfigType.CONFIG_TYPE_TITLE_TAG);
            if (!jsonObject.optBoolean(ConfigType.CONFIG_TYPE_HAS_NEED_TAG)) {
                continue;
            }
            mItem = new DataItemDetail();
            mItem.setStringValue(ConfigType.CONFIG_TYPE_KEY_TAG, key);

            if (GTConfig.instance().getLanguage().equals(GTConfig.LANG_ZH_CN)) {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TITLE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_DES_TAG));
            } else {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TITLE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TW_DES_TAG));
            }
            mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_ICONURL_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_ICONURL_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_HOT_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_HOT_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_NEW_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_NEW_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_HASLOGIN_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_HASLOGIN_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_HASSHARE_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_HASSHARE_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_HASBACK_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_HASBACK_TAG));
            mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TAG));
            mItem.setStringValue(ConfigType.CONFIG_TYPE_VALUE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_VALUE_TAG));
            if (key.equals(ConfigType.TAB_NEW_SCHOOL_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_newstudy);
            } else if (key.equals(ConfigType.TAB_ONLIVE_TAG)) {

            } else if (key.equals(ConfigType.TAB_DATA_CENTER_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_vane);
            } else if (key.equals(ConfigType.TAB_EXPERT_REVIEW_TAG)) {

            } else if (key.equals(ConfigType.TAB_ABOUT_US_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_aboutus);
            } else if (key.equals(ConfigType.TAB_CALENDAR_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_calendar);
            } else if (key.equals(ConfigType.TAB_NEWS_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_news);
            } else if (key.equals(ConfigType.TAB_NEW_HELP_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_newguide);
            } else if (key.equals(ConfigType.TAB_SUPER_MRAKET_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_supermarket);
            } else if (key.equals(ConfigType.TAB_ACTIVITY_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_activity);
            } else if (key.equals(ConfigType.TAB_DAILY_REPING_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_index_daily_reping);
            }
            items.addItem(mItem);
        }
        return items;
    }

    /**
     * 根据配置文件条件返回底部菜单的一些选项
     *
     * @param array
     * @return
     */
    private DataItemResult getBottomMenuList(JSONArray array) {
        DataItemResult items = new DataItemResult();
        DataItemDetail mItem;
        for (int i = 0; i < array.length(); i++) {
            JSONObject jsonObject = array.optJSONObject(i);
            String key = jsonObject.optString(ConfigType.CONFIG_TYPE_TITLE_TAG);
            if (!jsonObject.optBoolean(ConfigType.CONFIG_TYPE_HAS_NEED_TAG)) {
                continue;
            }
            mItem = new DataItemDetail();
            mItem.setStringValue(ConfigType.CONFIG_TYPE_KEY_TAG, key);
            if (GTConfig.instance().getLanguage().equals(GTConfig.LANG_ZH_CN)) {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TITLE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_DES_TAG));
            } else {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TITLE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TW_DES_TAG));
            }
            mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_ICONURL_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_ICONURL_TAG));
            mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TAG));
            mItem.setStringValue(ConfigType.CONFIG_TYPE_VALUE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_VALUE_TAG));
            if (key.equals(ConfigType.TAB_QUOTE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_market);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_market_p);
            } else if (key.equals(ConfigType.TAB_TRADE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_trade);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_trade_p);
            } else if (key.equals(ConfigType.TAB_NEWS_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_news);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_news_p);
            } else if (key.equals(ConfigType.TAB_MYSELF_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_me);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_me_p);
            } else if (key.equals(ConfigType.TAB_HOME_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_home);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_home_p);
            } else if (key.equals(ConfigType.TAB_ONLIVE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_forum);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_forum_p);
            } else if (key.equals(ConfigType.TAB_CALENDAR_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_market);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_market_p);
            } else if (key.equals(ConfigType.TAB_NOTICE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_trade);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_trade_p);
            } else if (key.equals(ConfigType.TAB_IMMEDIATE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_tabbar_video);
                mItem.setIntValue("iconID_selected", R.mipmap.a_tabbar_video_p);
            }
            items.addItem(mItem);
        }
        return items;
    }

    /**
     * 根据配置文件条件返回我的一些选项
     *
     * @param array
     * @return
     */
    private DataItemResult getIconMenuList(JSONArray array) {
        DataItemResult items = new DataItemResult();
        DataItemDetail mItem = null;
        for (int i = 0; i < array.length(); i++) {
            /**
             * "myCollect" "transactionCode" "recommended","contact","clearCache","aboutUs","versionUpdate"
             */
            JSONObject jsonObject = array.optJSONObject(i);
            String key = jsonObject.optString(ConfigType.CONFIG_TYPE_TITLE_TAG);
            mItem = new DataItemDetail();
            if (!jsonObject.optBoolean(ConfigType.CONFIG_TYPE_HAS_NEED_TAG)) {
                continue;
            }
            mItem.setStringValue(ConfigType.CONFIG_TYPE_KEY_TAG, key);
            if (GTConfig.instance().getLanguage().equals(GTConfig.LANG_ZH_CN)) {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TITLE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_DES_TAG));
            } else {
                mItem.setStringValue(ConfigType.CONFIG_TYPE_TITLE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TW_DES_TAG));
            }
            mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_ICONURL_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_ICONURL_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_HOT_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_HOT_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_NEW_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_NEW_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_HASLOGIN_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_HASLOGIN_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_HASSHARE_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_HASSHARE_TAG));
            mItem.setBooleanValue(ConfigType.CONFIG_TYPE_TYPE_HASBACK_TAG, jsonObject.optBoolean(ConfigType.CONFIG_TYPE_TYPE_HASBACK_TAG));

            mItem.setStringValue(ConfigType.CONFIG_TYPE_TYPE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_TYPE_TAG));
            mItem.setStringValue(ConfigType.CONFIG_TYPE_VALUE_TAG, jsonObject.optString(ConfigType.CONFIG_TYPE_VALUE_TAG));
            if (key.equals(ConfigType.MY_INFO_LIST_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_accinfo);
            } else if (key.equals(ConfigType.CONSTOM_SERVICE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_contact);
            } else if (key.equals(ConfigType.TRANSACTION_CODE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_tradecode);
            } else if (key.equals(ConfigType.RECOMMENDED_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_recommend);
            } else if (key.equals(ConfigType.CALENDER_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_calendar);
            } else if (key.equals(ConfigType.VIDEO_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_radio);
            } else if (key.equals(ConfigType.ADD_ME_REAL_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_accreal);
            } else if (key.equals(ConfigType.HOT_ACTIVE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_activity);
            } else if (key.equals(ConfigType.DEMO_GAME_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_activity);
            } else if (key.equals(ConfigType.BULLENTIN_TYPE_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_newmsg);
            } else if (key.equals(ConfigType.TAB_NEWS_TAG)) {
                mItem.setIntValue("iconID", R.mipmap.a_me_news);
            }
            items.addItem(mItem);
        }
        return items;
    }

    /**
     * 左菜单各选项点击事件
     *
     * @param mItem 选项对象
     */
    public void onViewClick(final FragmentActivity mActivity, DataItemDetail mItem, String title, SwitchAccountPresenter mSwitchPresenter) {
        String type = mItem.getString(ConfigType.CONFIG_TYPE_TYPE_TAG);
        String key = mItem.getString(ConfigType.CONFIG_TYPE_KEY_TAG);
        if (type.equals(ConfigType.CONFIG_TYPE_TYPE_NEXTSUB_TAG) || type.equals(ConfigType.CONFIG_TYPE_TYPE_NEXT_TAG)) {
            if (mItem.getBoolean(ConfigType.CONFIG_TYPE_TYPE_HASLOGIN_TAG)) {
                // 游客模拟登录时弹出提示
                if (GTConfig.instance().getAccountType() != GTConfig.ACC_TYPE_REAL) {
                    if (GTConfig.instance().getAccountType() == GTConfig.ACC_TYPE_DEMO) {
                        if (!NetworkMonitor.hasNetWork()) {
                            return;
                        }
                        if (null != mSwitchPresenter) {
                            mSwitchPresenter.AccAccountSwitch(GTConfig.ACC_TYPE_REAL, GTConfig.FROM_NEEDLOGIN);
                        }
                    } else {
                        LoginDialog.showLoginDialog(mActivity, ConfigUtil.instance().getErrorConfigObject().optString(ConfigType.SERVER_ERROR_1015));
                    }
                    return;
                }
            }
            ActivityManager.showSettingActivity(mActivity, key, title, mItem.getString(ConfigType.CONFIG_TYPE_TITLE_TAG));
        } else if (type.equals(ConfigType.CONFIG_TYPE_TYPE_URL_TAG) || type.equals(ConfigType.CONFIG_TYPE_TYPE_URL_RGS_TAG)) {
            onViewClickUrl(mActivity, mItem, title, mSwitchPresenter);
        } else {
            onViewClickPage(mActivity, key, title, mItem);
        }
        //友盟统计
        MobclickEventUtlis.MobclickEventByAccountType(mActivity, key);
    }

    /**
     * url类选项点击事件处理
     *
     * @param mActivity
     * @param mItem
     */
    private void onViewClickUrl(final FragmentActivity mActivity, DataItemDetail mItem, String title, SwitchAccountPresenter mSwitchPresenter) {
        String key = mItem.getString(ConfigType.CONFIG_TYPE_KEY_TAG);
        if (!NetworkMonitor.hasNetWork()) {
            return;
        }
        //推荐有奖
        if (mItem.getBoolean(ConfigType.CONFIG_TYPE_TYPE_HASLOGIN_TAG)) {
            // 游客登录时弹出提示
            if (GTConfig.instance().getAccountType() != GTConfig.ACC_TYPE_REAL) {
                if (GTConfig.instance().getAccountType() == GTConfig.ACC_TYPE_DEMO) {
                    if (!NetworkMonitor.hasNetWork()) {
                        return;
                    }
                    if (null != mSwitchPresenter) {
                        mSwitchPresenter.AccAccountSwitch(GTConfig.ACC_TYPE_REAL, GTConfig.FROM_NEEDLOGIN);
                    }
                } else {
                    LoginDialog.showLoginDialog(mActivity, ConfigUtil.instance().getErrorConfigObject().optString(ConfigType.SERVER_ERROR_1065));

                }
                return;
            }
        }

        if (key.equals(ConfigType.ADD_ME_REAL_TAG)) {
            //开户
            ActivityManager.showOpenAccount(mActivity, ConfigType.ADD_LOGIN_REAL_TAG);
        } else {
            ActivityManager.showWebPageActivity(mActivity, mItem, title);
        }
    }

    /**
     * page和func类选项点击事件处理
     */
    private void onViewClickPage(final FragmentActivity mActivity, String key, String mBack, DataItemDetail mItem) {
        if (CommonUtils.isFastDoubleClick()) {
            return;
        }
        if (key.equals(ConfigType.TAB_NEWS_TAG)) {
            ActivityManager.showNewsActivity(mActivity);
        } else if (key.equals(ConfigType.BULLENTIN_TYPE_TAG)) {
            ActivityManager.showBulletinActivity(mActivity, AppMain.getAppString(R.string.system_bulletin));
            MobclickEventUtlis.MobclickEventByAccountType(mActivity, "Title_Bulletion");
        }

    }

}
